// 负责使用uni-app-featch这个第三方请求包的
// 导入
import { createUniFetch } from 'uni-app-fetch'
import { useUserStore } from '@/stores/user.js'

// 配置uni-app-fetc的相关请求和响应参数
// export const uniFetch进行导出 ->在其他页面就可以导入使用uniFetch这个对象了
//
export const uniFetch = createUniFetch({
  loading: { title: '正在加载中...' }, // 请求提示配置
  baseURL: 'https://slwl-api.itheima.net', //配置请求基地址
  intercept: {
    // 请求拦截器
    request(options) {
      // 既然所有的请求都要经过这个方法处理一下，那么就可以在这里统一携带token给服务器即可
      // 1. 从pinia中获取token
      const store = useUserStore()
      const token = store.token

      // 2. 在options.header中存放了所有的请求报文头，直接将token增加到options.header
      options.header = Object.assign(
        {},
        { Authorization: token },
        options.header
      )

      return options // 确保请求参数加工之后，能够正常发送请求
    },

    // 响应拦截器
    response(result) {
      // result:就是服务器响应回来的响应报文：响应行，响应头，响应体
      // console.log('响应拦截器:', result)

      // 判断如果服务器的statusCode为401，则提示用户并跳转到登录页
      if (result.statusCode === 401) {
        uni.utils.toast('登录失效，请重新登录')
        uni.redirectTo({
          url: '/pages/login/index',
        })
      }
      /*result.data格式：
      {
          code:逻辑状态码 200表示正常数据，非200就是异常
          msg:后端提示回来的信息
          data:就是每个接口响应的正常业务数据
        }
      */
      return result.data //result.data:表示返回响应体的数据。 确保响应参数加工之后，能够正常接收
    },
  },
})
